A drive group may be a collection of associated drives used to store volume data. A drive group may be assigned a RAID level, which defines the data organization and redundancy model. A RAID volume may be the host accessible logical unit targeted for data I/O. A drive group may contain multiple volumes. All volumes within the drive group use the same set of physical drives and function at the same RAID level.
Drives of a drive group may include different capacities. The usable capacity of the volume group may be the RAID factor capacity based on the smallest drive in the group, excluding the region reserved for storage array configuration data. The free capacity of a drive group may be the usable capacity minus the capacity of any defined volumes. Free drive group capacity may be used to create additional volumes or expand the capacity of the existing volumes.
A RAID volume may occupy a region on each drive in the drive group. The regions for a RAID volume may all have the same offset in logical block addresses (LBAs) from the beginning of the drive and the same length in LBAs. Each such region that may be part of a given volume may be referred to as a piece. The collection of pieces for a volume may be referred to as a volume extent. A drive group may also have one or several free extents, each consisting of regions of unused capacity on the drive with the same offset and length.
The number of physical drives in a drive group may be referred to as the drive group width. The width affects both performance and accessibility for the RAID volumes in the drive group. The wider the drive group, the more physical spindles may be deployed in parallel and this increases performance for certain host I/O profiles. However, the wider the drive group, the higher the risk may be that one of its physical drives may fail.
The segment size may be an amount of data a controller writes to a single drive before writing data to the next drive of the drive group. A stripe may be a collection of segments, one on each drive of the drive group, all with same offset from the beginning of their drives. Consequently, a volume may also be viewed as a collection of stripes.
FIGS. 1 and 2 illustrate a drive group consisting of n+1 drives. Volume B may consist of n+1 pieces, B-0, B-1 . . . B-n. Each piece contains a number of segments. For example, piece B-0 may contains Seg-B00, Seg-BO1. . . Seg-BOk. A stripe goes across the drives, for example, segments Seg-B02, Seg-B12. . . Seg-Bn2 form a stripe B2. Volume B may consist of k+1 stripes.
Such a RAID layout may be algorithmic in the sense that it may be a simple calculation to determine which physical drive LBA on which drive in the drive group corresponds to a specific RAID volume virtual LBA. The RAID volumes may be also said to be tightly coupled with the drive group as the width of the drive group defines the width of the RAID volumes.
A physical drive in a drive group may fail completely so the data on it may be no longer accessible. If the drive group may include a RAID level with redundancy, (i.e., a non-RAID 0 drive group), there may be still enough data left on the remaining drives that the host may still access the data. However, except for RAID 6 and some specific RAID 1/10 cases, the drive group may no longer include redundancy until the failed drive is replaced and the data is reconstructed.
For RAID 1/10, this reconstruction may consist of copying all the data from the mirror drive to the replacement drive. For RAID 5 this reconstruction may consist of reading each stripe from the surviving drives in the drive group, (i.e., drive group width—1 segments) calculating the missing segment using parity and writing the recovered segment to the replacement drive.
The same approach may be followed for a single drive failure in a RAID 6 P+Q drive group except that the missing segment may be calculated from drive group width—2 segments due to the dual redundancy information.
Until the failed drive is replaced and the reconstruction is complete, a second drive failure will result in complete loss of data in the drive group unless the drive group is configured to tolerate multiple drive failures (e.g. RAID 6).
A storage array may dedicate a pool of unused physical drives in the storage array as hot spares. When a physical drive fails in a drive group with a redundant RAID level (i.e., non-RAID 0) the storage array may automatically allocate a replacement drive from the pool of hot spare drives and perform a reconstruction of the lost data on the hot spare drive.
Once the failed drive is replaced, the contents of the hot spare drive may be simply copied to the replacement drive, a process called copy-back. When a copy-back completes, the hot spare may be returned to the hot spare pool.
All the writes directed to a drive undergoing the reconstruction create a performance bottleneck for the process. Consequently, there may be a noticeable performance degradation during a drive reconstruction for any RAID volume in the affected drive group.
In addition, as physical drive sizes keep increasing, the reconstruction time for a single drive increases dramatically. A SATA drive may currently have capacity in excess of 1 TB and all of that data will have to be reconstructed and written to a single hot spare/replacement drive. This prolongs the performance degradation that hosts will experience for RAID volumes in the affected drive group and it also prolongs the time where a drive group may be without redundancy (e.g., for a RAID 5 drive group).